﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;//引入命名空间

namespace Tank
{
    /// <summary>
    /// 游戏元素类(抽象类)
    /// </summary>
    public abstract class GameElement
    {
        #region 构造函数
        /// <summary>
        /// 构造函数（无参）
        /// </summary>
        public GameElement()
        {
        }

        /// <summary>
        /// 构造函数（带参）
        /// </summary>
        /// <param name="x">游戏元素所处的X坐标</param>
        /// <param name="y">游戏元素所处的Y坐标</param>
        /// <param name="y">游戏元素的宽</param>
        /// <param name="y">游戏元素的高</param>
        public GameElement(int x, int y, int width, int height)
        {
            this.X = x;
            this.Y = y;
            this.Width = width;
            this.Height = height;
        }
        #endregion

        #region 画出游戏元素（抽象方法）
        public abstract void Draw(Graphics g);

        /// <summary>
        /// 获取游戏元素所在位置（以便检测游戏元素是否相遇）
        /// </summary>
        /// <returns></returns>
        public  Rectangle GetRectangle()
        {
            return new Rectangle(this.X, this.Y, this.Width, this.Height);
        }
        #endregion

        #region 自动属性

        /// <summary>
        /// 游戏元素所处的X坐标
        /// </summary>
        public int X { get; set; }

        /// <summary>
        /// 游戏元素所处的Y坐标
        /// </summary>
        public int Y { get; set; }

        /// <summary>
        /// 游戏元素的宽
        /// </summary>
        public int Width { get; set; }

        /// <summary>
        /// 游戏元素的高
        /// </summary>
        public int Height { get; set; }
        #endregion
    }
}
